
axios.defaults.baseURL = "http://localhost:8080"
Vue.prototype.$http = axios;

function parseUrl(){
    var url = location.href;
    var paramStr = url.split("?")[1];
    var obj = {};
    if(paramStr){
        // 如果?后面有值,才处理url中的参数
        var paramArray = paramStr.split("&");
        for(var i=0;i<paramArray.length;i++){
            var param = paramArray[i];  // typeId=27
            var key = param.split("=")[0];
            var value = param.split("=")[1];
            // 动态将key和value交给query中的参数
            // 如果不确定要给对象中哪一个属性设置值,就可以通过[]的方式,动态指定对象中的属性名
            obj[key] = value;
        }
    }
    return obj;
}


// 登录拦截步骤:
// 1 判断一下当前页面是不是受限页面
// 2 如果是受限页面,需要从localStorage中获取token
// 3 判断token是否有值.如果没有值就拦截跳转回登录页面/首页

// 定义要放行的页面
var releaseHtmls = ["/index.html","/callback.html","/binder.html","/shoppingCar.html","/list.html"];
// 拿到当前要访问的页面路径
var url = location.href;    // http://127.0.0.1/list.html
var isRun = false;      // 是否放行
// 如果当前要访问的页面,就是127.0.0.1或者localhost的话,说明当前是要访问默认的首页,那么就直接放行
if(url == "http://127.0.0.1/" || url == "http://localhost/"){
    isRun = true;
}else{
    for (var i=0;i<releaseHtmls.length;i++){
        // 如果url中包含某个放行的地址,那么我们就直接放行就好了
        if(url.indexOf(releaseHtmls[i]) > -1){
            isRun = true;
            break
        }
    }
}

// 如果isRun=false,说明当前需要做登录拦截
/*
if(!isRun){
    var token = localStorage.getItem("token");
    if(!token){
        // token没有值,说明当前没有登陆过,要跳转回首页
        alert("请登录后再次访问!");
        location.href = "/index.html";
    }
}
*/

axios.interceptors.request.use(
    config => {
        // 从localStorage中获取token
        let token = localStorage.getItem("token");

        // 如果token有值,我们就放到请求头里面
        if (token) {
            config.headers.token = token;
        }
        return config
    },
    error => {
        return Promise.reject(error)
    })


// 响应拦截器:后端响应结果给前端时,都要先经过响应拦截器
axios.interceptors.response.use(function(response){
    //对返回的数据进行操作
    let result = response.data;  // response.data 就是后端返给我们的数据  {success:false,message:"noLogin"}
    if(!result.success && result.message == "noLogin"){ // 说明未登录,被拦截了,那么就要跳回到登陆页面
        alert("请登录后再次访问!");
        location.href="/index.html";
    }else{
        // 如果登录过的话,就继续往下运行
        return response;
    }
},function(err){
    return Promise.reject(err)
})